/**
 * @description jwt - verify sign
 */

const util = require('util')
const jwt = require('jsonwebtoken')
const { JWT_SECRET } = require('../config/constant')
const { jwtExpiresIn } = require('../config/index')

const verify = util.promisify(jwt.verify)

/**
 * jwt verify (目前没有手动使用，koa-jwt 中间件已经自动解析到 ctx.state.user)
 * @param {string} token token
 */
async function jwtVerify(token) {
  const data = await verify(token, JWT_SECRET)
  return data
}

/**
 * jwt sign
 * @param {Object} data data
 */
function jwtSign(data) {
  const token = jwt.sign(data, JWT_SECRET, { expiresIn: jwtExpiresIn })
  return token
}

module.exports = {
  jwtVerify,
  jwtSign
}
